/* global $this: true */
/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "animationsSlider" }] */

if ($.cookie('themeCSSpath')) {
    $('link#theme-stylesheet').attr('href', $.cookie('themeCSSpath'))
}
if ($.cookie('themeLayout')) {
    $('body').addClass($.cookie('themeLayout'))
}

$(function () {
    sliderHomepage()
    sliders()
    fullScreenContainer()
    productDetailGallery(4000)
    productDetailSizes()
    utils()
    animations()
    counters()
    demo()
    contactFormAjax()
})

// Ajax contact
function contactFormAjax () {
    var form = $('.contact-form-ajax')
    if (typeof form === 'undefined') return false
    form.submit(function () {
        $this = $(this)
        $.post($(this).attr('action'),
            $this.serialize(),
            function () {
                $this[0].reset() // clear form

                $('#contact-message')
                    .html('<div class="alert alert-success" role="alert"><button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>Thank you for getting in touch. We will get back to you soon!</div>')
                    .fadeIn()
            }
            , 'json')
        return false
    })
}

/* for demo purpose only - can be deleted */
function demo () {
    if ($.cookie('themeCSSpath')) {
        $('link#theme-stylesheet').attr('href', $.cookie('themeCSSpath'))
    }

    $('#colour').change(function () {
        if ($(this).val() !== '') {
            var themeCSSpath = 'css/style.' + $(this).val() + '.css'

            $('link#theme-stylesheet').attr('href', themeCSSpath)

            $.cookie('themeCSSpath', themeCSSpath, {expires: 365, path: '/'})
        }

        return false
    })

    $('#layout').change(function () {
        if ($(this).val() !== '') {
            var themeLayout = $(this).val()

            $('body').removeClass('wide')
            $('body').removeClass('boxed')

            $('body').addClass(themeLayout)

            $.cookie('themeLayout', themeLayout, {expires: 365, path: '/'})
        }

        return false
    })
}

/* slider homepage */
function sliderHomepage () {
    if ($('#slider').length) {
        // var owl = $('#slider')

        $('#slider').owlCarousel({
            autoPlay: 3000,
            items: 4,
            itemsDesktopSmall: [900, 3],
            itemsTablet: [600, 3],
            itemsMobile: [500, 2]
        })
    }
}

/* sliders */
function sliders () {
    if ($('.owl-carousel').length) {
        $('.customers').owlCarousel({
            items: 6,
            itemsDesktopSmall: [990, 4],
            itemsTablet: [768, 2],
            itemsMobile: [480, 1]
        })

        $('.testimonials').owlCarousel({
            items: 4,
            itemsDesktopSmall: [990, 3],
            itemsTablet: [768, 2],
            itemsMobile: [480, 1]
        })

        $('.project').owlCarousel({
            navigation: true, // Show next and prev buttons
            navigationText: ['<i class="fas fa-angle-left"></i>', '<i class="fas fa-angle-right"></i>'],
            slideSpeed: 300,
            paginationSpeed: 400,
            autoPlay: true,
            stopOnHover: true,
            singleItem: true,
            afterInit: '',
            lazyLoad: true
        })

        $('.homepage').owlCarousel({
            navigation: false, // Show next and prev buttons
            navigationText: ['<i class="fas fa-angle-left"></i>', '<i class="fas fa-angle-right"></i>'],
            slideSpeed: 2000,
            paginationSpeed: 1000,
            autoPlay: true,
            stopOnHover: true,
            singleItem: true,
            lazyLoad: false,
            addClassActive: true,
            afterInit: function () {
                // animationsSlider()
            },
            afterMove: function () {
                // animationsSlider()
            }
        })
    }
}

/* animations */
function animations () {
    var delayTime = 0
    $('[data-animate]').css({opacity: '0'})
    $('[data-animate]').waypoint(function () {
        delayTime += 150
        $(this).delay(delayTime).queue(function (next) {
            $(this).toggleClass('animated')
            $(this).toggleClass($(this).data('animate'))
            delayTime = 0
            next()
            // $(this).removeClass('animated')
            // $(this).toggleClass($(this).data('animate'))
        })
    }, {
        offset: '90%',
        triggerOnce: true
    })

    $('[data-animate-hover]').hover(function () {
        $(this).css({opacity: 1})
        $(this).addClass('animated')
        $(this).removeClass($(this).data('animate'))
        $(this).addClass($(this).data('animate-hover'))
    }, function () {
        $(this).removeClass('animated')
        $(this).removeClass($(this).data('animate-hover'))
    })
}

function animationsSlider () {
    var delayTimeSlider = 400

    $('.owl-item:not(.active) [data-animate-always]').each(function () {
        $(this).removeClass('animated')
        $(this).removeClass($(this).data('animate-always'))
        $(this).stop(true, true, true).css({opacity: 0})
    })

    $('.owl-item.active [data-animate-always]').each(function () {
        delayTimeSlider += 500

        $(this).delay(delayTimeSlider).queue(function () {
            $(this).addClass('animated')
            $(this).addClass($(this).data('animate-always'))

            console.log($(this).data('animate-always'))
        })
    })
}

/* counters */
function counters () {
    $('.counter').counterUp({
        delay: 10,
        time: 1000
    })
}

/* picture zoom */
function pictureZoom () {
    $('.product .image, .post .image, .photostream div').each(function () {
        var imgHeight = $(this).find('img').height()
        if (imgHeight) {
            $(this).height(imgHeight)
        }
    })
}

/* full screen intro */
function fullScreenContainer () {
    var screenWidth = $(window).width() + 'px'
    var screenHeight = '500px'

    if ($(window).height() > 500) {
        screenHeight = $(window).height() + 'px'
    }

    $('#intro, #intro .item').css({
        width: screenWidth,
        height: screenHeight
    })
}

function utils () {
    /* tooltips */
    $('[data-toggle="tooltip"]').tooltip()

    /* click on the box activates the radio */
    $('#checkout').on('click', '.box.shipping-method, .box.payment-method', function () {
        var radio = $(this).find(':radio')
        radio.prop('checked', true)
    })

    /* click on the box activates the link in it */
    $('.box.clickable').on('click', function () {
        window.location = $(this).find('a').attr('href')
    })

    /* external links in new window */
    $('.external').on('click', function (e) {
        e.preventDefault()
        window.open($(this).attr('href'))
    })

    /* animated scrolling */
    $('.scroll-to, .scroll-to-top').click(function (event) {
        var fullUrl = this.href
        var parts = fullUrl.split('#')

        if (parts.length > 1) {
            scrollTo(fullUrl)
            event.preventDefault()
        }
    })

    function scrollTo (fullUrl) {
        var parts = fullUrl.split('#')
        var trgt = parts[1]
        var targetOffset = $('#' + trgt).offset()
        var targetTop = targetOffset.top - 100

        if (targetTop < 0) {
            targetTop = 0
        }

        $('html, body').animate({
            scrollTop: targetTop
        }, 1000)
    }
}

/* product detail gallery */
function productDetailGallery (confDetailSwitch) {
    $('.thumb:first').addClass('active')
    var timer = setInterval(autoSwitch, confDetailSwitch)

    $('.thumb').click(function (e) {
        switchImage($(this))
        clearInterval(timer)
        timer = setInterval(autoSwitch, confDetailSwitch)
        e.preventDefault()
    })

    $('#mainImage').hover(function () {
        clearInterval(timer)
    }, function () {
        timer = setInterval(autoSwitch, confDetailSwitch)
    })

    function autoSwitch () {
        var nextThumb = $('.thumb.active').closest('div').next('div').find('.thumb')
        if (nextThumb.length === 0) {
            nextThumb = $('.thumb:first')
        }
        switchImage(nextThumb)
    }

    function switchImage (thumb) {
        $('.thumb').removeClass('active')
        var bigUrl = thumb.attr('href')
        thumb.addClass('active')
        $('#mainImage img').attr('src', bigUrl)
    }
}

/* product detail sizes */
function productDetailSizes () {
    $('.sizes a').click(function (e) {
        e.preventDefault()
        $('.sizes a').removeClass('active')
        $('.size-input').prop('checked', false)
        $(this).addClass('active')
        $(this).next('input').prop('checked', true)
    })
}

$.fn.alignElementsSameHeight = function () {
    $('.same-height-row').each(function () {
        var maxHeight = 0
        var children = $(this).find('.same-height')
        children.height('auto')

        if ($(window).width() > 768) {
            children.each(function () {
                if ($(this).innerHeight() > maxHeight) {
                    maxHeight = $(this).innerHeight()
                }
            })
            children.innerHeight(maxHeight)
        }

        maxHeight = 0
        children = $(this).find('.same-height-always')
        children.height('auto')
        children.each(function () {
            if ($(this).height() > maxHeight) {
                maxHeight = $(this).innerHeight()
            }
        })
        children.innerHeight(maxHeight)
    })
}

var windowWidth
$(function () {
    windowWidth = $(window).width()

    $(this).alignElementsSameHeight()
    pictureZoom()
})

$(window).resize(function () {
    var newWindowWidth = $(window).width()

    if (windowWidth !== newWindowWidth) {
        setTimeout(function () {
            $(this).alignElementsSameHeight()
            fullScreenContainer()
            pictureZoom()
        }, 205)
        windowWidth = newWindowWidth
    }
})
